import numpy as np
%matplotlib notebook
import matplotlib.pyplot as plt
import ipywidgets as widgets
from maux import *
hide_interactive_toolbars()
Nakreslenie grafu lineárnej funkcie danej rovnicou $$y = x.$$
#####
##### nakreslenie grafu funkcie
#####
#### vstupné údaje
def f(X): return X # ufunc verzia funkcie
X = np.linspace(-3, 3, 6*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 6) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
## inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
init_subplot(ax)
## pomenovanie diagramu
ax.set_title(r"Graf funkcie $y = x$")
## nastavenie rovnakej mierky pre obe osi
ax.set_aspect('equal')
## pravoúhla sieť
# ax.grid()
## graf funkcie
ax.plot(X, Y)
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Nakreslenie grafu a vyšetrenie priebehu lineárnej funkcie danej rovnicou $$y = 2x+3.$$ Tu nás zaujíma tiež táto informácia:
#####
##### nakreslenie grafu a vyšetrenie priebehu funkcie
#####
#### vstupné údaje
def f(X): return 2 * X + 3 # ufunc verzia funkcie
X = np.linspace(-4, 1, 5*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 8) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
## inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
init_subplot(ax)
## pomenovanie diagramu
ax.set_title(r"Graf a priebeh funkcie $y = 2x+3$")
## nastavenie rovnakej mierky pre obe osi
ax.set_aspect('equal')
## pravoúhla sieť
# ax.grid()
## graf funkcie
ax.plot(X, Y)
## nulové body funkcie
ax.plot(-3/2, 0, 'o', label=r"nulový bod $-\frac{3}{2}$")
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
V nasledujúcich príkladoch budeme kresliť grafy a vyšetrovať priebeh lineárných funkcií. Pretože tieto funkcie majú neohraničený definičný obor, budeme pri zostrojovaní grafu každej takejto funkcie vykreslovať len jej zaujímavú časť.
Pri vyšetrovaní priebehu každej z nasledujúcich funkcií treba určiť:
Súradnice význačných bodov, ktoré sú zrejmé z grafu, netreba explicitne uvádzať.
Poznámka. Tu si uvedieme tie vlastnosti lineárnej funkcie $y = ax+b$, ktoré nebudeme graficky zobrazovať:
#####
##### šablóna riešenia (nakreslenie grafu a vyšetrenie priebehu funkcie)
#####
#### vstupné údaje
# def f(X): return None # ufunc verzia funkcie
# X = np.linspace(None, None, None+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# Y = f(X) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
# fig, ax = plt.subplots()
# fig.set_size_inches(6, 6) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
# init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
# ax.set_title(r"Graf a priebeh funkcie $y = ax+b$") # pomenovanie diagramu
# ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## graf funkcie
# ax.plot(X, Y)
## nulové body funkcie
# ax.plot(None, 0, 'o', label=r"nulový bod $?$")
## legenda
# ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
# fig.show()
Nakreslite grafy a vyšetrite priebeh týchto funkcií \begin{align*} y & = 3x+1, \\ y & = \frac{x}{2}-1, \\ y & = 2-3x. \end{align*}
Zostrojenie inverznej funkcie k funkcii $$y = \frac{4}{5}x+\frac{1}{3}.$$ Grafické overenie, že riešenie je správne.
#####
##### inverzná funkcia
#####
#### vstupné údaje
def f(X): return 4/5 * X + 1/3 # ufunc verzia funkcie
X1 = np.linspace(-1, 4, 5*10+1) # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y1 = f(X1) # odpovedajúce hodnoty závislej premennej
def g(X): return X # ufunc verzia pre os súmernosti
X2 = X1 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y2 = g(X2) # odpovedajúce hodnoty závislej premennej
def h(X): return 5/4 * X - 5/12 # ufunc verzia inverznej funkcie
X3 = X1 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(5, 6) # veľkosť obrázka (východzia hodnota je 6x4)
### diagram
init_subplot(ax) # inicializácia diagramu: vytvorí sa pravoúhla súradnicová sústava
ax.set_title(r"Inverzná funkcia") # pomenovanie diagramu
ax.set_aspect('equal') # nastavenie rovnakej mierky pre obe osi
# ax.grid() # pravoúhla sieť
## graf funkcie
color1 = ax.plot([], [])[0].get_color()
ax.plot(X1, Y1, color=color1, label=r"funkcia $y = \dfrac{4}{5}x+\dfrac{1}{3}$")
## os súmernosti
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
## graf inverznej funkcie
color3 = ax.plot([], [])[0].get_color()
ax.plot(X3, Y3, color=color3, label=r"inverzná funkcia $y = \dfrac{5}{4}x-\dfrac{5}{12}$")
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
Zostrojte inverznú funkciu k funkcii $$y = \frac{5}{2}-\frac{3}{4}x.$$ Overte graficky, že riešenie je správne.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6, 7)
init_subplot(ax)
ax.set_title(r"Inverzná funkcia")
ax.set_aspect('equal')
# ax.grid() # pravoúhla sieť
def f(X): return -3/4 * X + 5/2
X1 = np.linspace(-1, 4, 5*10+1)
Y1 = f(X1)
ax.plot(X1, Y1, label=r"funkcia $y = \dfrac{5}{2}-\dfrac{3}{4}x$")
def g(X): return X
X2 = X1
Y2 = g(X2)
ax.plot(X2, Y2, 'k--', lw=1, label=r"os súmernosti")
## riešenie
# def h(X): None # ufunc verzia inverznej funkcie
# X3 = X1 # výber hodnôt nezávislej premennej pre zaujímavú časť grafu
# Y3 = h(X3) # odpovedajúce hodnoty závislej premennej
# ax.plot(X3, Y3, label=r"inverzná funkcia $y = \dfrac{?}{?}-\dfrac{?}{?}x$") # graf inverznej funkcie
## dokončenie
ax.legend()
# fig.savefig("<meno súboru>.png")
fig.show()
Zostrojte lineárnu funkciu, ktorej graf je priamka určenej rovnicou $$6x+10y-5 = 0.$$ Nakreslite graf a vyšetrite priebeh tejto funkcie.
Zostrojenie priamky, ktorá prechádza bodmi $[-1,2]$ a $[3,-1]$. Grafické overenie, že riešenie je správne.
###
### vzorové riešenie (1. verzia)
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6, 5)
init_subplot(ax)
ax.set_title(r"Spojnica")
ax.set_aspect('equal')
ax.plot([-1, 3], [2, -1], 'o', label=r"body $[-1,2]$ a $[3,-1]$")
## riešenie
def f(X): return -3/4 * X + 5/4 # smernicový tvar rovnice priamky
X = np.linspace(-2, 4, 6*10+1)
ax.plot(X, f(X), label=r"riešenie $3x+4y-5 = 0$") # všeobecná rovnica priamky
## dokončenie
ax.legend()
fig.show()
###
### vzorové riešenie (2. verzia)
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6, 5)
init_subplot(ax)
ax.set_title(r"Spojnica")
ax.set_aspect('equal')
ax.grid()
ax.plot([-1, 3], [2, -1], 'o')
## riešenie
def f(X): return -3/4 * X + 5/4 # smernicový tvar rovnice priamky
X = np.linspace(-2, 4, 6*10+1)
ax.plot(X, f(X), label=r"riešenie $3x+4y-5 = 0$") # všeobecná rovnica priamky
## dokončenie
ax.legend()
fig.show()
Zostrojte priamku, ktorá prechádza bodom $[1,-1]$ a je rovnobežná s priamkou $2x+3y-6 = 0$. Overte graficky, že vaše riešenie je správne.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6, 6)
init_subplot(ax)
ax.set_title(r"Rovnobežka")
ax.set_aspect('equal')
ax.grid()
ax.plot(1, -1, 'o')
X = np.linspace(-2, 4, 6*10+1)
ax.plot(X, (6 - 2 * X) / 3, label=r"priamka $2x+3y-6 = 0$")
## riešenie
# def f(X): return None # smernicový tvar rovnice priamky
# ax.plot(X, f(X), label=r"riešenie $?x+?y+? = 0$") # všeobecná rovnica priamky
## dokončenie
ax.legend()
fig.show()
Zostrojte priamku, ktorá prechádza bodom $[2,-1]$ a je kolmá na priamku $5x-7y-4 = 0$. Overte graficky, že vaše riešenie je správne.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6,7)
init_subplot(ax)
ax.set_title(r"Kolmica")
ax.set_aspect('equal')
ax.grid()
ax.plot(2, -1, 'o')
X = np.linspace(-1, 4, 5*10+1)
ax.plot(X, (5 * X - 4) / 7, label=r"priamka $5x-7y-4 = 0$")
## riešenie
# def f(X): return None # smernicový tvar rovnice priamky
# ax.plot(X, f(X), label=r"riešenie $?x+?y+? = 0$") # všeobecná rovnica priamky
## dokončenie
ax.legend()
fig.show()
Zostrojte dotyčnicu kružnice $x^2+y^2 = 8$ v bode $[-2,-2]$. Overte graficky, že riešenie je správne.
###
### šablóna riešenia
###
## zadanie
fig, ax = plt.subplots()
fig.set_size_inches(6, 7)
init_subplot(ax)
ax.set_title(r"Dotyčnica")
ax.set_aspect('equal')
ax.grid()
ax.plot(-2, -2, 'o')
T = np.linspace(0, 2 * np.pi, 100)
ax.plot(np.sqrt(8) * np.cos(T), np.sqrt(8) * np.sin(T), label=r"kružnica $x^2+y^2 = 8$")
## riešenie
# def f(X): return None # smernicový tvar rovnice priamky
# X = np.linspace(-6, 3, 9*10+1)
# ax.plot(X, f(X), label=r"riešenie $?x+?y+? = 0$") # všeobecná rovnica priamky
## dokončenie
ax.legend()
fig.show()
Nakreslenie grafov lineárnych homogénnych funkcií $$y = x+b$$ pre $b = -2, -1, 0, 1, 2$ do jedného obrázka. Grafom je priamka, ktorá vznikne s priamky $y = x$ posunutím o $b$ jednotiek pozdĺž osi $y$.
Dokumentácia:
#####
##### grafy parametrického systému funkcií
#####
#### vstupné údaje
def f(X, b): return X + b
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 10)
### diagram
init_subplot(ax)
ax.set_title(r"Grafy funkcií $y = x+b$")
ax.set_aspect('equal')
ax.grid()
ax.set_xticks(range(-3, 3+1)) # kótovanie x-ovej osi
ax.set_yticks(range(-5, 5+1)) # kótovanie y-ovej osi
## grafy funkcií
for b in [-2, -1, 0, 1, 2]:
ax.plot(X, f(X, b), label=r"$b = {}$".format(b))
## legenda
ax.legend()
### archivácia obrázka
# fig.savefig("<meno súboru>.png")
### samotné zobrazenie
fig.show()
To isté ako v predchadzajúcom príklade, len vykreslenie sa deje pomocou interaktívnych prvkov knižnice ipywidgets
.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, b): return X + b
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(6, 10)
### diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-5.3, 5.3) # ohraničenie hodnôt pre os y
ax.set_xticks(range(-3, 3+1)) # kótovanie x-ovej osi
ax.set_yticks(range(-5, 5+1)) # kótovanie y-ovej osi
## graf funkcie y = x + b
def plot_graph(b):
ax.set_title(r"Graf funkcie $y = x + {0}$".format(b))
if ax.lines:
ax.lines[0].set_ydata(f(X, b))
else:
ax.plot(X, f(X, b))
widgets.interact(plot_graph,
b=widgets.SelectionSlider(options=[-2, -1, 0, 1, 2], value=0)
)
### samotné zobrazenie
fig.show()
interactive(children=(SelectionSlider(description='b', index=2, options=(-2, -1, 0, 1, 2), value=0), Output())…
Do jedného obrázka nakreslite grafy lineárnych homogénnych funkcií $$y = ax$$ pre $a = -2, -1, -\frac{1}{2}, \frac{1}{2}, 1, 2$.
Návod.
Nasledujúci obrázok obsahuje jedno z možných riešení.
Iné riešenie by bolo pomocou interaktívnych prvkov knižnice ipywidgets
.
Nakreslenie grafu lineárnej funkcie danej rovnicou vo vrcholovom tvare $$y = a(x-h)+k$$ pre vybrané hodnoty parametrov $a,h,k$. Grafom je priamka so smernicou $a$ prechádzajúca bodom $[h,k]$.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a, h, k): return a * (X - h) + k
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 12)
### diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-9.4, 9.4) # ohraničenie hodnôt pre os y
ax.set_yticks(range(-9, 9+1)) # kótovanie y-ovej osi
## graf funkcie y = a(x-h)+k
def plot_graph(a, h, k):
ax.set_title(r"Graf funkcie $y = {0}({{x}}-{1})+{2}$".format(a, h, k))
if ax.lines:
ax.lines[0].set_data(h, k)
ax.lines[1].set_ydata(f(X, a, h, k))
else:
ax.plot(h, k, 'o')
ax.plot(X, f(X, a, h, k))
widgets.interact(plot_graph,
a=widgets.SelectionSlider(options=[-2, -1, -1/2, 1/2, 1, 2], value=1),
h=widgets.IntSlider(min=-1, max=1, step=1, value=0),
k=widgets.IntSlider(min=-1, max=1, step=1, value=0)
)
fig.show()
interactive(children=(SelectionSlider(description='a', index=4, options=(-2, -1, -0.5, 0.5, 1, 2), value=1), I…
Nakreslenie grafu lineárnej funkcie danej rovnicou v štandardnom tvare $$y = ax+b$$ pre vybrané hodnoty parametrov $a,b$.
#####
##### grafy parametrického systému funkcií (interaktívna verzia)
#####
#### vstupné údaje
def f(X, a, b): return a * X + b
X = np.linspace(-3, 3, 6*10+1)
#### obrázok s jedným diagramom
fig, ax = plt.subplots()
fig.set_size_inches(4, 12)
### diagram
init_subplot(ax)
ax.set_aspect('equal')
ax.grid()
ax.set_ylim(-8.4, 8.4) # ohraničenie hodnôt pre os y
ax.set_yticks(range(-8, 8+1)) # kótovanie y-ovej osi
## graf funkcie y = ax+b
def plot_graph(a, b):
ax.set_title(r"Graf funkcie $y = {0}{{x}}+{1}$".format(a, b))
if ax.lines:
ax.lines[0].set_ydata(f(X, a, b))
else:
ax.plot(X, f(X, a, b))
widgets.interact(plot_graph,
a=widgets.SelectionSlider(options=[-2, -1, -1/2, 1/2, 1, 2], value=1),
b=widgets.IntSlider(min=-2, max=2, step=1, value=0)
)
### samotné zobrazenie
fig.show()
interactive(children=(SelectionSlider(description='a', index=4, options=(-2, -1, -0.5, 0.5, 1, 2), value=1), I…